There is an increasing number of input devices on the market. For example, computers can receive input signals from mice, keyboards, touch pads, analog joysticks, directional pads, cameras, wands, head-mounted displays (HMDs), and eye tracking devices, to name a few. When it comes to designing and coding graphical user interfaces, some current programming paradigms do not optimally provide a universal approach to accommodating a wide range of input devices. In fact, some current programming paradigms can make it difficult for developers to write code for user interfaces that can be used with a wide range of input devices. For instance, a computer programmer that is skilled in designing user interfaces for touch input devices may require extensive training to design and code a user interface for a head tracking input device. In addition, some coding paradigms require programmers to write code to associate individual interface elements with one another to allow users to navigate between the individual interface elements. Such coding requirements can be cumbersome, particularly when a developer is working with a large number of interface elements.
In addition to the above-described issue, in some cases, when a particular programming methodology is used to implement a user interface that accommodates certain input technologies, some existing programming methodologies can restrict the number of UI layout options. FIGS. 1A and 1B illustrate one example of such a dilemma.
FIG. 1A illustrates a user interface 100 having a number of selectable interface elements, each of which may be selectable buttons associated with some type of computerized functionality. Such a layout is useful for most types of input devices, such as a directional pad (a four-direction D-pad), a keyboard, etc. When a user wants to move a focus point 101, e.g., a selected section of the UI, from one interface element to another, they can actuate a button indicating a direction, as shown.
Although some devices can work with certain UI layouts having a degree of uniformity, such as the one shown in FIG. 1A, some devices may not work so well when the UI layout is not uniform, such as the UI layout shown in FIG. 1B. In this example, when buttons, icons, and other graphical elements are different sizes and not aligned with one another, it may be difficult for some users having certain types of input devices to select a desired interface element.
In the example shown in FIG. 1B, when the user wants to move a focus point 101 from the first interface element 102A to another interface element, some input devices providing a direction may not provide a sufficient level of accuracy for an operating system to determine if the user is pointing at the second interface element 102B, the third interface element 102C, or the fourth interface element 102D. This issue is exacerbated as the industry produces new types of input devices, each providing a different level of accuracy. Thus, most UI designers cannot even contemplate such unique, non-uniform UI designs because the code for such UI designs would have to accommodate each type of input device and/or different levels of accuracy to enable users to proficiently navigate to desired interface elements.
It is with respect to these and other considerations that the disclosure made herein is presented.